﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Thor.Common;

namespace Thor.Domain.Configuration
{
    /// <summary>
    /// A repository that stores calendar entities.
    /// </summary>
    public interface ICalendarRepository : IRepository
    {
        /// <summary>
        /// Inserts a new calendar record into the repository.
        /// </summary>
        /// <param name="calendar"></param>
        void Insert(Calendar calendar);

        /// <summary>
        /// Updates a calendar record in the repository.
        /// </summary>
        /// <param name="calendar"></param>
        void Update(Calendar calendar);

        /// <summary>
        /// Deletes a calendar entity from the repository.
        /// </summary>
        /// <param name="calendar"></param>
        void Delete(Calendar calendar);

        /// <summary>
        /// Fetches all calendar entities from the repository.
        /// </summary>
        /// <returns></returns>
        List<Calendar> Fetch();

        /// <summary>
        /// Fetches a calendar entity from the repository.
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Calendar Fetch(Guid id);
    }
}
